This invention relates to data storage systems and more particularly to data storage systems adapted to store data in, and retrieve data from, a bank of disk drives through a high speed cache or global memory interface disposed between the bank of disk drives and a host computer.
As is known in the art, large mainframe, or host computer systems require large capacity data storage systems. These large computer systems generally include data processors which perform many operations on data introduced to the computer system through peripherals including the data storage system. The results of these operations are output to peripherals, including the storage system.
One type of data storage system is a magnetic disk storage system. Here a bank of disk drives and the main frame computer system are coupled together through an interface. The interface includes CPU, or xe2x80x9cfront endxe2x80x9d, controllers (or directors) and xe2x80x9cback endxe2x80x9d disk controllers (or directors). The interface operates the controllers (or directors) in such a way that they are transparent to the computer. That is, data is stored in, and retrieved from, the bank of disk drives in such a way that the mainframe computer system merely thinks it is operating with one mainframe memory. One such system is described in U.S. Pat. No. 5,206,939, entitled xe2x80x9cSystem and Method for Disk Mapping and Data Retrievalxe2x80x9d, inventors Moshe Yanai, Natan Vishlitzky, Bruno Alterescu and Daniel Castel, issued Apr. 27, 1993, and assigned to the same assignee as the present invention.
As described in such U.S. Patent, the interface may also include, in addition to the CPU controllers (or directors) and disk controllers (or directors), addressable cache memories. The cache memory is a semiconductor memory and is provided to rapidly store data from the main frame computer system before storage in the disk drives, and, on the other hand, store data from the disk drives prior to being sent to the main frame computer. The cache memory being a semiconductor memory, as distinguished from a magnetic memory as in the case of the disk drives, is much faster than the disk drives in reading and writing data.
The CPU controllers, disk controllers and cache memory are interconnected through a backplane printed circuit board. More particularly, disk directors are mounted on disk director printed circuit boards. CPU directors are mounted on CPU controller printed circuit boards. And, cache memories are mounted on cache memory printed circuit boards. The disk director, CPU director and cache memory printed circuit boards plug into the backplane printed circuit board. In order to provide data integrity in case of a failure in a controller, the backplane printed circuit board has a pair of buses. One set the disk controllers is connected to one bus and another set of the disk controllers is connected to the other bus. Likewise, one set the CPU directors is connected to one bus and another set of the CPU directors is connected to the other bus. The cache memories are connected to both buses. Each one of the buses provides data, address and control information. Thus, the use of two buses provides a degree of redundancy to protect against a total system failure in the event that the controllers, or disk drives connected to one bus fail. Further, the use of two buses increases the data transfer bandwidth of the system compared to a system having a single bus. A four bus system is described in co-pending patent application Ser. No. 09/223,115 filed Dec. 30, 1998, entitled Data Storage Systems, inventors Tuccio et al., assigned to the same assignee as the present invention, the entire subject matter thereof being incorporated herein by reference.
As noted above, the directors and cache memories are on printed circuit boards which plug into the backplane. As is also known in the art, the front end directors may be coupled to the host computer through a variety of front-end adapters, such as SCSI, fibre channel, Enterprise Systems Connection (ESCON), etc. For example, referring to FIG. 1, a front end director printed circuit board adapted for use in the two bus system described above, is shown coupled to an ESCON front-end adapter. It is noted that the front-end adapter has a pair of ports H1 and H2 adapted to couple to a pair of host computer ports. It is noted that the adapter is itself a printed circuit board which plugs into one side or the backplane as described in the above-referenced co-pending patent application for the four bus configuration. As described in such patent application, the director printed circuit board plugs into the opposite side of the printed circuit board.
Referring to FIG. 1, the two bus system described above is shown. An exemplary one of the front end adapters used in such system is shown in FIG. 2 to include a pair of optical interfaces each of which is coupled to a gate array. Each gate array, and the optical interface coupled thereto, is controlled by a CPU on the adapted board. The gate array, under control of its CPU, controls the flow of data between the front end director and the host computer. Thus, with such an arrangement, there are two independent data channels, Channel A and Channel B, between the host computer and each controller printed circuit board.
The control of data between the front end adapted board and the global cache memory connected to the director board, is through a pair of CPUs on the director board. These director board CPUs provide such control through communication with a corresponding one of the pair CPUs on the adapter board. The communication is through a corresponding one of a pair of shared memories, as indicated. It is noted that the two gate arrays in the director board are coupled to the global cache memory through a common data channel, here an SD I/O bus. The shared data channel includes a dual port RAM and an EDAC. as described in U.S. Pat. No. 5,890,207 entitled High Performance Integrated Cache Storage Device, inventors Sne et al, issued Mar. 30, 1999, assigned to the same assignee as the present invention the entire subject matter thereof being incorporated herein by reference. Arbitration for the common channel (i.e., for the SD I/O bus) is through a lower machine, as described in U.S. Pat. No. 5,890,207. Arbitration for the port of the dual port RAM (i.e., the port connected to the EDAC and the port connected to the global cache memory) is through the upper machine, as described in U.S. Pat. No. 5,890,207.
In operation, and considering data passing from the host computer to the cache memory, the front end adapter gate array configures the data into, here 32 bit memory data words. The director CPUs package the 32 bit data words into here 64 bit memory data words. Requests for the SD I/O bus from the pair of director gate arrays are arbitrated by the lower machine via control signals ARB SD I/O, as indicated. The lower machine controls the EDAC and the dual port RAM. The start address for the data to be stored in the global cache memory is provided by address gate arrays under the control of the director CPUs and the lower machine. Further, considering, for example, that Channel A data is being processed by the EDAC and the data is then presented to the Channel B during such processing of the Channel A data, the lower machine prevents the data in Channel B from passing to the EDAC until completion of the processing of the Channel A data. The passing of data from the global cache memory to the host computer is by reciprocal operation.
Referring now to FIG. 3, another front end adapter/front end director configuration is shown for use the with two bus arrangement described above in connection with FIG. 1. Here, however, there are four ports H1, H2, H3 and H4 connecting the front end adapter to the host computer. While the director operates as described above in connection with FIG. 2, here there are four optic interfaces connected to the four ports H1, H2, H3 and H4, as indicated. Again there are only two gate arrays in the front end adapter each controlled by a corresponding one of the pair of front end adapter board CPUs. Here again there are only two independent data channels, Channel A and Channel B. Thus, while there are here four ports for connection to the host computer, there are still only two independent data channels, Channel A and Channel B (i.e., arbitration is required between ports H1 and H2 for Channel A and arbitration between ports H3 and H4 for Channel B).
Referring now to FIG. 4, a front end adapted and front end director arrangement is shown adapted for use in the four bus arrangement described in the above-referenced co-pending patent application. As described in such co-pending patent application, each director is coupled to a pair of the four busses. One of such busses is coupled to a xe2x80x9chigh addressxe2x80x9d memory section (MH) of the global cache memory and the other bus is coupled to a xe2x80x9clow addressxe2x80x9d (ML) memory section of the global cache memory. It is first noted that the front end adapter is the same as that described above in connection with FIG. 3. Here, however, the director has two EDACs and thus a pair of data channels, XSD I/O and YSD I/O, as indicated. Thus, here data Channel A is coupled to a first one of the pair of EDACs via the XSD I/O bus and data Channel B is coupled to the other one of the pair of EDACs though the YSD I/O bus, as indicated. Each EDAC is coupled to a corresponding one of a pair of dual port RAMs, as shown. The dual port RAMS are coupled to the xe2x80x9chigh addressxe2x80x9d memory section (MH) of the global cache memory or the xe2x80x9clow addressxe2x80x9d (ML) though transceivers (XCVRs) under the control of the upper machine, as indicated. Thus, as in the case of the configuration described above in connection with FIG. 3, while each front end director board has four ports with which to connect to the host computer, there are only two independent data channels, i.e., Channel A and Channel B. Thus, arbitration is required between ports H1 and H2 for Channel A and arbitration between ports H3 and H4 for Channel B), as indicated.
It should be noted that in all the configurations described above in connection with FIGS. 1 through 4, the CPUs start the transfer of data, stop the transfer of data and monitors the transfer of data; however, the CPUs do not actually move the data. Thus, the gate arrays move the data and thus the transfer of data to, and from, the cache memory is a DMA (direct memory access) transfer.
In accordance with the present invention, a system is provided having a plurality of processors. Each one of the processors is adapted to, in response to a predetermined command, issue a particular control signal to either all other the processors in a broadcast mode or to a selected one of the other processors in a uni-cast mode. A common software program is stored in each one of the plurality of processors. Each one of such programs operates to: receive the command with an associated processor ID code, each one of the processors having a unique, pre-assigned processor ID code; test whether the received command is the predetermined command and, if not, return to the idle state; otherwise, test whether the processor code with the associated received command is the same as the pre-assigned processor ID code and if so, generate a broadcast mode; otherwise, generate a uni-cast mode, the particular one of the processors being given the control signal being selected as function of the command ID code and the unique, pre-assigned processor ID code. In accordance with another feature of the invention, a system is provided having a plurality of processors. Each one of the processors is adapted to issue a particular control signal and a processor ID code. Each one of the processors has a unique, pre-assigned processor ID code. A software program is adapted to operate to: receive the control signal, an indication of the one of the processors which issued the particular control signal, and a processor ID code; test whether the received processor ID code corresponds to the one of the processors issuing the command and if so, generate a broadcast signal to the other ones of the processors; otherwise, generate a uni-cast signal to one of the processors.
In accordance with another feature of the invention, a method is provided for generating either a uni-cast signal or a broadcast signal. The method includes: receiving a control signal, an indication of the one of the processors which issued the particular control signal, and a processor ID code from one of a plurality of processors, each one of the processors being adapted to issue a particular control signal and a processor ID code, each one of the processors having a unique, pre-assigned processor ID code; and, testing whether the received processor ID code corresponds to the one of the processors issuing the command and if so, generate a broadcast signal to the other ones of the processors; otherwise, generate a uni-cast signal to one of the processors.
In one embodiment, a plurality of processors is provided, each one of the processors being adapted to issue a particular control signal and a processor ID code, each one of the processors having a unique, pre-assigned processor ID code. A common software program is provided and being operative: receive the control signal and the processor ID code from the issuing one of the processors along with an indication of the one of the processors which issued the particular control signal and processor ID code; test whether the received processor ID code is the same as the processor issuing the command and if so, generate a broadcast signal to the other ones of the processors; otherwise, generate a uni-cast signal to the one of the processor indicated by the received processor ID code.
In accordance with one embodiment, a plurality of processors is provided, each one of the processors being adapted to issue a particular control signal and a processor ID code. Each one of the processors has a unique, pre-assigned processor ID code. A common software program is adapted to operate to: receive the control signal and the processor ID code from the issuing one of the processors along with an indication of the one of the processors which issued the particular control signal and processor ID code; test whether the received processor ID code is the same as the processor issuing the command and if so, generate one of the broadcast mode or uni-cast modes; otherwise, generate the other one of the broadcast or uni-cast modes.
In one embodiment, a plurality of processors is provided, each one of the processors having a plurality of ATT_OTHER lines. Each one of the lines is connected to the other ones of the processors. Each one of the processors is adapted to issue an ATT_OTH signal to all other the processors in a broadcast mode or to a selected one of the other processors in accordance with a uni-cast mode. Each one of the processors has a unique, pre-assigned processor ID code. A common software program is stored in each one of the plurality of processors, each one of such programs operating to: initialize to the processor into an idle state and generate a :highxe2x80x9d voltage on the all the processor""s ATT_OTHER lines; receive a command with an associated processor ID code; test whether the command is an ATT_OTH command, if not, return to the idle state; otherwise, test whether the processor code with the associated received command is the same as the pre-assigned processor ID code and if so, generate a xe2x80x9clowxe2x80x9d voltage on all ATT_OTH lines of the processor; otherwise, generate a xe2x80x9clowxe2x80x9d voltage on only ATT_OTH lines designated by the ID code in the command, the particular one of the ATT_OTH lines made xe2x80x9clowxe2x80x9d being selected as function of the command ID code and the unique, pre-assigned processor ID code.
In another embodiment, a plurality of processors is provided, each one of the processors having a plurality of ATT_OTHER lines. Each one of the lines is connected to the other ones of the processors. Each one of the processors is adapted to issue either an ATT_OTH control signal to all other the processors in a broadcast mode or to a selected one of the other processors in accordance with a uni-cast mode. Each one of the processors has a unique, pre-assigned processor ID code. A common software program is stored in each one of the plurality of processors, each one of such programs operating to: initialize to the processor into an idle state and generate a :highxe2x80x9d voltage on the all the processor""s ATT_OTHER lines; receive a command with an associated processor ID code; test whether the received command is an ATT_OTH command, if not, return to the idle state; otherwise, test whether the processor code with the associated received command is the same as the pre-assigned processor ID code and if so, generate a broadcast mode; otherwise, generate a uni-cast mode, the particular one of the processors being given the ATT_OTH command being selected as function of the command ID code and the unique, pre-assigned processor ID code.